/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package abstractmodel;

import java.util.ArrayList;

/**
 *
 * @author littlechild
 */
public interface IAccount extends java.io.Serializable {
    IInfo getAccountInfo();
    boolean setAccountInfo(IInfo info);
    boolean addDetail(IDetail detail);
    boolean deleteDetailInfo(IDetail detail);
    ArrayList<IDetail> getDetailsInfo();
    model.StatisticsInfo getStatistics(StatisticsType type);
    double getTotalLeftMoney();
    ArrayList<IDetail> searchDetailBetweenDate(String timeBeginString, String timeEndString);
    IBook getOwnerBook();
    /**
     * @param filter
     * see "filter_semantics.pdf" for detail
     * @return
     */
    ArrayList<IDetail> searchDetailInfo(String filter);
}
